<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <title>Reference</title>
    <link rel="stylesheet" href="../luadoc.css" type="text/css" />
	<!--meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/-->
</head>

<body>
<div id="container">

<div id="product">
	<div id="product_logo"></div>
	<div id="product_name"><big><b></b></big></div>
	<div id="product_description"></div>
</div> <!-- id="product" -->

<div id="main">

<div id="navigation">


<h1>LuaDoc</h1>
<ul>
	
	<li><a href="../index.html">Index</a></li>
	
</ul>


<!-- Module list -->

<h1>Modules</h1>
<ul>

	<li>
		<a href="../modules/luci.dispatcher.html">luci.dispatcher</a>
	</li>

	<li><strong>luci.http</strong></li>
	
	<li>
		<a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
	</li>

	<li>
		<a href="../modules/luci.http.date.html">luci.http.date</a>
	</li>

	<li>
		<a href="../modules/luci.http.mime.html">luci.http.mime</a>
	</li>

	<li>
		<a href="../modules/luci.i18n.html">luci.i18n</a>
	</li>

	<li>
		<a href="../modules/luci.ip.html">luci.ip</a>
	</li>

	<li>
		<a href="../modules/luci.ip.cidr.html">luci.ip.cidr</a>
	</li>

	<li>
		<a href="../modules/luci.json.html">luci.json</a>
	</li>

	<li>
		<a href="../modules/luci.jsonc.html">luci.jsonc</a>
	</li>

	<li>
		<a href="../modules/luci.jsonc.parser.html">luci.jsonc.parser</a>
	</li>

	<li>
		<a href="../modules/luci.model.ipkg.html">luci.model.ipkg</a>
	</li>

	<li>
		<a href="../modules/luci.model.uci.html">luci.model.uci</a>
	</li>

	<li>
		<a href="../modules/luci.rpcc.html">luci.rpcc</a>
	</li>

	<li>
		<a href="../modules/luci.rpcc.ruci.html">luci.rpcc.ruci</a>
	</li>

	<li>
		<a href="../modules/luci.sys.html">luci.sys</a>
	</li>

	<li>
		<a href="../modules/luci.sys.init.html">luci.sys.init</a>
	</li>

	<li>
		<a href="../modules/luci.sys.iptparser.html">luci.sys.iptparser</a>
	</li>

	<li>
		<a href="../modules/luci.sys.net.html">luci.sys.net</a>
	</li>

	<li>
		<a href="../modules/luci.sys.process.html">luci.sys.process</a>
	</li>

	<li>
		<a href="../modules/luci.sys.user.html">luci.sys.user</a>
	</li>

	<li>
		<a href="../modules/luci.sys.wifi.html">luci.sys.wifi</a>
	</li>

	<li>
		<a href="../modules/luci.util.html">luci.util</a>
	</li>

	<li>
		<a href="../modules/luci.xml.html">luci.xml</a>
	</li>

	<li>
		<a href="../modules/nixio.html">nixio</a>
	</li>

	<li>
		<a href="../modules/nixio.CHANGELOG.html">nixio.CHANGELOG</a>
	</li>

	<li>
		<a href="../modules/nixio.CryptoHash.html">nixio.CryptoHash</a>
	</li>

	<li>
		<a href="../modules/nixio.File.html">nixio.File</a>
	</li>

	<li>
		<a href="../modules/nixio.README.html">nixio.README</a>
	</li>

	<li>
		<a href="../modules/nixio.Socket.html">nixio.Socket</a>
	</li>

	<li>
		<a href="../modules/nixio.TLSContext.html">nixio.TLSContext</a>
	</li>

	<li>
		<a href="../modules/nixio.TLSSocket.html">nixio.TLSSocket</a>
	</li>

	<li>
		<a href="../modules/nixio.UnifiedIO.html">nixio.UnifiedIO</a>
	</li>

	<li>
		<a href="../modules/nixio.bin.html">nixio.bin</a>
	</li>

	<li>
		<a href="../modules/nixio.bit.html">nixio.bit</a>
	</li>

	<li>
		<a href="../modules/nixio.crypto.html">nixio.crypto</a>
	</li>

	<li>
		<a href="../modules/nixio.fs.html">nixio.fs</a>
	</li>

</ul>



<!-- File list -->







</div><!-- id="navigation" -->

<div id="content">

<h1>Class <code>luci.http</code></h1>

<p></p>







<h2>Functions</h2>
<table class="function_list">

	<tr>
	<td class="name" nowrap><a href="#build_querystring">build_querystring</a>&nbsp;(table)</td>
	<td class="summary">
 
Create a querystring out of a table of key - value pairs.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#close">close</a>&nbsp;()</td>
	<td class="summary">
 
Close the HTTP-Connection.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#content">content</a>&nbsp;()</td>
	<td class="summary">
 
Return the request content if the request was of unknown type.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#formvalue">formvalue</a>&nbsp;(name, noparse)</td>
	<td class="summary">
 
Get a certain HTTP input value or a table of all input values.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#formvaluetable">formvaluetable</a>&nbsp;(prefix)</td>
	<td class="summary">
 
Get a table of all HTTP input values with a certain prefix.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#getcookie">getcookie</a>&nbsp;(name)</td>
	<td class="summary">
 
Get the value of a certain HTTP-Cookie.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#getenv">getenv</a>&nbsp;(name)</td>
	<td class="summary">
 
Get the value of a certain HTTP environment variable 
or the environment table itself.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#header">header</a>&nbsp;(key, value)</td>
	<td class="summary">
 
Send a HTTP-Header.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#mimedecode_message_body">mimedecode_message_body</a>&nbsp;(src, msg, filecb)</td>
	<td class="summary">
 
Decode a mime encoded http message body with multipart/form-data Content-Type.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#parse_message_body">parse_message_body</a>&nbsp;(src, msg, filecb)</td>
	<td class="summary">
 
Try to extract and decode a http message body from the given ltn12 source.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#prepare_content">prepare_content</a>&nbsp;(mime)</td>
	<td class="summary">
 
Set the mime type of following content data.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#redirect">redirect</a>&nbsp;(url)</td>
	<td class="summary">
 
Redirects the client to a new URL and closes the connection.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#setfilehandler">setfilehandler</a>&nbsp;(callback)</td>
	<td class="summary">
 
Set a handler function for incoming user file uploads.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#source">source</a>&nbsp;()</td>
	<td class="summary">
 
Get the RAW HTTP input source 
 </td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#splice">splice</a>&nbsp;(fp, size)</td>
	<td class="summary">
 
Splice data from a filedescriptor to the client.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#status">status</a>&nbsp;(code, message)</td>
	<td class="summary">
 
Set the HTTP status code and status message.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#urldecode">urldecode</a>&nbsp;(str, no_plus)</td>
	<td class="summary">
 
Return the URL-decoded equivalent of a string.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#urldecode_message_body">urldecode_message_body</a>&nbsp;(src, msg)</td>
	<td class="summary">
 
Decode an urlencoded http message body with application/x-www-urlencoded 
Content-Type.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#urldecode_params">urldecode_params</a>&nbsp;(url, tbl)</td>
	<td class="summary">
 
Extract and split urlencoded data pairs, separated bei either "&" or ";" 
from given url or string.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#urlencode">urlencode</a>&nbsp;(str)</td>
	<td class="summary">
 
Return the URL-encoded equivalent of a string.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#urlencode_params">urlencode_params</a>&nbsp;(tbl)</td>
	<td class="summary">
 
Encode each key-value-pair in given table to x-www-urlencoded format, 
separated by "&".</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#write">write</a>&nbsp;(content, src_err)</td>
	<td class="summary">
 
Send a chunk of content data to the client.</td>
	</tr>

	<tr>
	<td class="name" nowrap><a href="#write_json">write_json</a>&nbsp;(data)</td>
	<td class="summary">
 
Send the given data as JSON encoded string.</td>
	</tr>

</table>






<br/>
<br/>


<h2><a name="functions"></a>Functions</h2>
<dl class="function">



<dt><a name="build_querystring"></a><strong>build_querystring</strong>&nbsp;(table)</dt>
<dd>

 
Create a querystring out of a table of key - value pairs. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  table: Query string source table
	</li>
	
</ul>






<h3>Return value:</h3>
Encoded HTTP query string



</dd>




<dt><a name="close"></a><strong>close</strong>&nbsp;()</dt>
<dd>

 
Close the HTTP-Connection. 










</dd>




<dt><a name="content"></a><strong>content</strong>&nbsp;()</dt>
<dd>

 
Return the request content if the request was of unknown type. 








<h3>Return values:</h3>
<ol>
	
	<li>HTTP request body
	
	<li>HTTP request body length
	
</ol>



</dd>




<dt><a name="formvalue"></a><strong>formvalue</strong>&nbsp;(name, noparse)</dt>
<dd>

 
Get a certain HTTP input value or a table of all input values. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  name: Name of the GET or POST variable to fetch
	</li>
	
	<li>
	  noparse: Don't parse POST data before getting the value
	</li>
	
</ul>






<h3>Return value:</h3>
HTTP input value or table of all input value



</dd>




<dt><a name="formvaluetable"></a><strong>formvaluetable</strong>&nbsp;(prefix)</dt>
<dd>

 
Get a table of all HTTP input values with a certain prefix. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  prefix: Prefix
	</li>
	
</ul>






<h3>Return value:</h3>
Table of all HTTP input values with given prefix



</dd>




<dt><a name="getcookie"></a><strong>getcookie</strong>&nbsp;(name)</dt>
<dd>

 
Get the value of a certain HTTP-Cookie. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  name: Cookie Name
	</li>
	
</ul>






<h3>Return value:</h3>
String containing cookie data



</dd>




<dt><a name="getenv"></a><strong>getenv</strong>&nbsp;(name)</dt>
<dd>

 
Get the value of a certain HTTP environment variable 
or the environment table itself. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  name: Environment variable
	</li>
	
</ul>






<h3>Return value:</h3>
HTTP environment value or environment table



</dd>




<dt><a name="header"></a><strong>header</strong>&nbsp;(key, value)</dt>
<dd>

 
Send a HTTP-Header. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  key: Header key
	</li>
	
	<li>
	  value: Header value
	</li>
	
</ul>








</dd>




<dt><a name="mimedecode_message_body"></a><strong>mimedecode_message_body</strong>&nbsp;(src, msg, filecb)</dt>
<dd>

 
Decode a mime encoded http message body with multipart/form-data Content-Type. 
 
Stores all extracted data associated with its parameter name 
in the params table within the given message object. Multiple parameter 
values are stored as tables, ordinary ones as strings. 
 
If an optional file callback function is given then it is fed with the 
file contents chunk by chunk and only the extracted file name is stored 
within the params table. The callback function will be called subsequently 
with three arguments: 
 o Table containing decoded (name, file) and raw (headers) mime header data 
 o String value containing a chunk of the file data 
 o Boolean which indicates whether the current chunk is the last one (eof) 



<h3>Parameters</h3>
<ul>
	
	<li>
	  src: Ltn12 source function
	</li>
	
	<li>
	  msg: HTTP message object
	</li>
	
	<li>
	  filecb: File callback function (optional)
	</li>
	
</ul>






<h3>Return values:</h3>
<ol>
	
	<li>Value indicating successful operation (not nil means "ok")
	
	<li>String containing the error if unsuccessful
	
</ol>



<h3>See also:</h3>
<ul>
	
	<li><a href="">
		parse_message_header
	</a>
	
</ul>

</dd>




<dt><a name="parse_message_body"></a><strong>parse_message_body</strong>&nbsp;(src, msg, filecb)</dt>
<dd>

 
Try to extract and decode a http message body from the given ltn12 source. 
This function will examine the Content-Type within the given message object 
to select the appropriate content decoder. 
 
Currently the application/x-www-urlencoded and application/form-data 
mime types are supported. If the encountered content encoding can't be 
handled then the whole message body will be stored unaltered as "content" 
property within the given message object. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  src: Ltn12 source function
	</li>
	
	<li>
	  msg: HTTP message object
	</li>
	
	<li>
	  filecb: File data callback (optional, see mimedecode_message_body())
	</li>
	
</ul>






<h3>Return values:</h3>
<ol>
	
	<li>Value indicating successful operation (not nil means "ok")
	
	<li>String containing the error if unsuccessful
	
</ol>



<h3>See also:</h3>
<ul>
	
	<li><a href="">
		parse_message_header
	</a>
	
</ul>

</dd>




<dt><a name="prepare_content"></a><strong>prepare_content</strong>&nbsp;(mime)</dt>
<dd>

 
Set the mime type of following content data. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  mime: Mimetype of following content
	</li>
	
</ul>








</dd>




<dt><a name="redirect"></a><strong>redirect</strong>&nbsp;(url)</dt>
<dd>

 
Redirects the client to a new URL and closes the connection. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  url: Target URL
	</li>
	
</ul>








</dd>




<dt><a name="setfilehandler"></a><strong>setfilehandler</strong>&nbsp;(callback)</dt>
<dd>

 
Set a handler function for incoming user file uploads. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  callback: Handler function
	</li>
	
</ul>








</dd>




<dt><a name="source"></a><strong>source</strong>&nbsp;()</dt>
<dd>

 
Get the RAW HTTP input source 








<h3>Return value:</h3>
HTTP LTN12 source



</dd>




<dt><a name="splice"></a><strong>splice</strong>&nbsp;(fp, size)</dt>
<dd>

 
Splice data from a filedescriptor to the client. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  fp: File descriptor
	</li>
	
	<li>
	  size: Bytes to splice (optional)
	</li>
	
</ul>








</dd>




<dt><a name="status"></a><strong>status</strong>&nbsp;(code, message)</dt>
<dd>

 
Set the HTTP status code and status message. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  code: Status code
	</li>
	
	<li>
	  message: Status message
	</li>
	
</ul>








</dd>




<dt><a name="urldecode"></a><strong>urldecode</strong>&nbsp;(str, no_plus)</dt>
<dd>

 
Return the URL-decoded equivalent of a string. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  str: URL-encoded string
	</li>
	
	<li>
	  no_plus: Don't decode + to " "
	</li>
	
</ul>






<h3>Return value:</h3>
URL-decoded string



<h3>See also:</h3>
<ul>
	
	<li><a href="#urlencode">
		urlencode
	</a>
	
</ul>

</dd>




<dt><a name="urldecode_message_body"></a><strong>urldecode_message_body</strong>&nbsp;(src, msg)</dt>
<dd>

 
Decode an urlencoded http message body with application/x-www-urlencoded 
Content-Type. 
 
Stores all extracted data associated with its parameter name in the params 
table within the given message object. Multiple parameter values are stored 
as tables, ordinary ones as strings. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  src: Ltn12 source function
	</li>
	
	<li>
	  msg: HTTP message object
	</li>
	
</ul>






<h3>Return values:</h3>
<ol>
	
	<li>Value indicating successful operation (not nil means "ok")
	
	<li>String containing the error if unsuccessful
	
</ol>



<h3>See also:</h3>
<ul>
	
	<li><a href="">
		parse_message_header
	</a>
	
</ul>

</dd>




<dt><a name="urldecode_params"></a><strong>urldecode_params</strong>&nbsp;(url, tbl)</dt>
<dd>

 
Extract and split urlencoded data pairs, separated bei either "&" or ";" 
from given url or string. Returns a table with urldecoded values. 
 
Simple parameters are stored as string values associated with the parameter 
name within the table. Parameters with multiple values are stored as array 
containing the corresponding values. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  url: The url or string which contains x-www-urlencoded form data
	</li>
	
	<li>
	  tbl: Use the given table for storing values (optional)
	</li>
	
</ul>






<h3>Return value:</h3>
Table containing the urldecoded parameters



<h3>See also:</h3>
<ul>
	
	<li><a href="#urlencode_params">
		urlencode_params
	</a>
	
</ul>

</dd>




<dt><a name="urlencode"></a><strong>urlencode</strong>&nbsp;(str)</dt>
<dd>

 
Return the URL-encoded equivalent of a string. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  str: Source string
	</li>
	
</ul>






<h3>Return value:</h3>
URL-encoded string



<h3>See also:</h3>
<ul>
	
	<li><a href="#urldecode">
		urldecode
	</a>
	
</ul>

</dd>




<dt><a name="urlencode_params"></a><strong>urlencode_params</strong>&nbsp;(tbl)</dt>
<dd>

 
Encode each key-value-pair in given table to x-www-urlencoded format, 
separated by "&". 
 
Tables are encoded as parameters with multiple values by repeating the 
parameter name with each value. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  tbl: Table with the values
	</li>
	
</ul>






<h3>Return value:</h3>
String containing encoded values



<h3>See also:</h3>
<ul>
	
	<li><a href="#urldecode_params">
		urldecode_params
	</a>
	
</ul>

</dd>




<dt><a name="write"></a><strong>write</strong>&nbsp;(content, src_err)</dt>
<dd>

 
Send a chunk of content data to the client. 
 
This function is as a valid LTN12 sink. 
If the content chunk is nil this function will automatically invoke close. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  content: Content chunk
	</li>
	
	<li>
	  src_err: Error object from source (optional)
	</li>
	
</ul>








<h3>See also:</h3>
<ul>
	
	<li><a href="#close">
		close
	</a>
	
</ul>

</dd>




<dt><a name="write_json"></a><strong>write_json</strong>&nbsp;(data)</dt>
<dd>

 
Send the given data as JSON encoded string. 



<h3>Parameters</h3>
<ul>
	
	<li>
	  data: Data to send
	</li>
	
</ul>








</dd>


</dl>





</div> <!-- id="content" -->

</div> <!-- id="main" -->

<div id="about">
	<p><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
</div> <!-- id="about" -->

</div> <!-- id="container" -->
</body>
</html>
